package com.example.nightmeel.dummy;

import java.util.List;

import com.example.nightmeel.DetailActivity;
import com.example.nightmeel.R;
import com.example.nightmeel.db.TimeLineData;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;

public class ContentsAdapter extends ArrayAdapter<TimeLineData>{

    private static final String tag = ContentsAdapter.class.getSimpleName();

    // コンテクスト
    private Context mContext;

    // XMLからViewを生成するのに使う
    private LayoutInflater mInf;

    // リストアイテムのレイアウトファイルID
    private int mLayoutResourceId;

    // 表示するアイテム
    private List<TimeLineData> lists;

    private ListView mParent;

    // 前のアイテムのサイズ
    private int preSize = 1;

    private int mPos = 0;

    public ContentsAdapter(Context context, int resource, List<TimeLineData> objects) {
        super(context, resource, objects);

        mContext = context;
        // リソースIDとリストアイテムを保持
        mLayoutResourceId = resource;
        lists = objects;

        mInf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.d("ContentsAdapter", "getView start.");

        // ビューホルダー
        ViewHolder holder = null;
        // ビューを取得
        View view = convertView;

        mParent = (ListView)parent;

     // ビューがnullの場合
        if (view == null) {
            // リストアイテムのレイアウトファイルを読み込む
            view = mInf.inflate(mLayoutResourceId, null);

            // ホルダークラスにレイアウトのインスタンスを保持
            holder = makeHolder(view);

            // ビューにタグ（ホルダー）を付ける
            view.setTag(holder);

        } else {
            // nullでないなら再利用。tagにセットしたビューホルダーを利用。
            holder = (ViewHolder)view.getTag();
        }

        /*
        if (mPos == position){
            mPos++;
        } else {
            mPos = position;
        }
        */

        TimeLineData content = (TimeLineData) lists.get(position);
        /*
        if (lists.size() > mPos ) {
            // 対象のアイテムを取得
            content = (TimeLineData) lists.get(mPos);
        } else {
            content = (TimeLineData) lists.get(position);
        }
        */

        //  小
        if (preSize == 1) {
            preSize = 2;

            // 大を非表示に
            holder.bigViewLayout.setVisibility(View.GONE);
            holder.smallViewLayout.setVisibility(View.VISIBLE);

            // ★2枚貼る。次のpositionのを。

            // rowIdを。
            holder.imageviewSmall1.setTag(content.getRowid());
            //holder.imageviewSmall2.setTag(lists.get(position+1).getRowid());

            //holder.imageviewSmall1.setImageResource(R.drawable.agemono);
            holder.imageviewSmall1.setImageURI(Uri.parse(content.getImage()));
            holder.imageviewSmall2.setImageResource(R.drawable.oyakododon);
            holder.imageviewSmall2.setEnabled(false);
        } else if (preSize == 2) {
            preSize = 1;
            // 小を非表示に
            holder.bigViewLayout.setVisibility(View.VISIBLE);
            holder.smallViewLayout.setVisibility(View.GONE);

            // rowIdを。
            holder.imageviewLarge1.setTag(content.getRowid());
            //holder.imageviewLarge1.setImageResource(R.drawable.kushiage);
            holder.imageviewLarge1.setImageURI(Uri.parse(content.getImage()));

        }

        return view;
    }

    private ViewHolder makeHolder(View view) {
        // ビューホルダーにビューを保持する
        ViewHolder holder = new ViewHolder();

        holder.bigViewLayout = (LinearLayout)view.findViewById(R.id.layout_large);
        holder.smallViewLayout = (LinearLayout)view.findViewById(R.id.layout_small);

        // 小（左側）
        holder.imageviewSmall1 = (ImageView) view.findViewById(R.id.content_small_1);
        holder.imageviewSmall1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(tag, "imageviewSmall1 onClick.");
                // 詳細画面を起動する処理を実装
                ImageView image = (ImageView)v;
                int rowId = (Integer)image.getTag();
                Log.d(tag, "rowId is ." + rowId);

                Intent intent = new Intent(getContext(), DetailActivity.class);
                // idを渡す
                intent.putExtra("rowId", rowId);
                //intent.putExtra("rowId", 1);
                getContext().startActivity(intent);
            }
        });

        holder.imageviewSmall2 = (ImageView) view.findViewById(R.id.content_small_2);
        holder.imageviewSmall2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(tag, "imageviewSmall2 onClick.");
                // 詳細画面を起動する処理を実装
                ImageView image = (ImageView)v;
                int rowId = (Integer)image.getTag();
                Log.d(tag, "rowId is ." + rowId);

                Intent intent = new Intent(getContext(), DetailActivity.class);
                // idを渡す
                intent.putExtra("rowId", rowId);
                //intent.putExtra("rowId", 2);
                getContext().startActivity(intent);
            }
        });

        // 大
        holder.imageviewLarge1 = (ImageView) view.findViewById(R.id.content_large_1);
        holder.imageviewLarge1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(tag, "imageviewLarge1 onClick.");
                // 詳細画面を起動する処理を実装
                ImageView image = (ImageView)v;
                int rowId = (Integer)image.getTag();
                Log.d(tag, "rowId is ." + rowId);

                Intent intent = new Intent(getContext(), DetailActivity.class);
                // idを渡す(パーセルか）
                intent.putExtra("rowId", rowId);
                //intent.putExtra("rowId", 3);
                getContext().startActivity(intent);
            }
        });

        return holder;
    }

    /**
     * TODOリスト用ホルダークラス.
     * @author daisuke
     */
    private class ViewHolder {
        public LinearLayout smallViewLayout;
        public LinearLayout bigViewLayout;

        public ImageView imageviewSmall1;
        public ImageView imageviewSmall2;
        public ImageView imageviewLarge1;
    }

}

